package com.netx.cubigraf.entities;
import java.text.SimpleDateFormat;
import com.netx.generics.time.Date;
import com.netx.generics.util.Strings;


public class Referencia {

	public final Date data;
	public final int codigo;
	
	public Referencia(Date data, int codigo) {
		this.data = data;
		this.codigo = codigo;
		_checkCodigo(codigo);
	}

	public Referencia(String ref) {
		// verificar se possui o fromato correcto:
		if(Strings.isEmpty(ref)) {
			throw new IllegalArgumentException(ref);
		}
		String[] array = ref.split("-");
		if(array.length != 3) {
			array = ref.split(" ");
			if(array.length != 3) {
				throw new IllegalArgumentException(ref);
			}
		}
		// tripe daqui a 100 anos...
		SimpleDateFormat sdf = new SimpleDateFormat("yy-MM");
		this.data = Date.valueOf(array[0]+"-"+array[1], sdf);
		this.codigo = new Integer(array[2]).intValue();
		_checkCodigo(codigo);
	}

	public String toString() {
		SimpleDateFormat sdf = new SimpleDateFormat("yy-MM");
		return data.format(sdf) + "-" + Strings.valueOf(codigo, 4);	
	}
	
	private void _checkCodigo(int codigo) {
		if(codigo<1 || codigo>9999) {
			throw new IllegalArgumentException("illegal code: "+codigo);
		}
	}

}
